/**
 * File Name: DrawObject.java
 *
 * Date: 18/12/2009
 *
 */
package gui;

import model.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;

/**
 * Deze klasse handelt het tekenen van alle objecten af
 *
 * @author Michiel Declercq
 * @author Stijn Delbeke
 * @author Dieter Deriemaeker
 * @author Gregory Nickmans
 *
 */
public class DrawObject {

    /**
     * Teken een dier
     *
     * @param g Het Graphics-object waarop getekend moet worden
     * @param d Het Dier die moet getekend worden
     */
    public void drawDier(Graphics g, Dier d) {
        g.setColor(d.getColor());
        g.fillArc(d.getLocation().x, d.getLocation().y, d.getSize().width, d.getSize().height, d.getCurrentTheta() + 180 - 20, 40);

        //drawDetectionRanges(g,d);
    }

    /**
     * Teken een obstakel
     * 
     * @param g Het Graphics-object waarop getekend moet worden
     * @param o Het Obstakel dat moet getekend worden
     */
    public void drawObstakel(Graphics g, Obstakel o) {
        g.setColor(o.getColor());

        Graphics2D g2 = (Graphics2D) g;
        g2.fill(o.getShape());

        //g2.draw(o.getShape().getBounds2D());
    }

    /**
     * Teken een stromingsgebied
     * 
     * @param g Het Graphics-object waarop getekend moet worden
     * @param s De Stroming die moet getekend worden
     */
    public void drawStroming(Graphics g, Stroming s) {
        g.setColor(Constanten.KLEUR_STROMING);

        Graphics2D g2 = (Graphics2D) g;
        g2.fill(s.getShape());

    }

    /**
     * Teken DETECTION_DISTANCE op het scherm.
     * Vooral bedoeld om te debuggen.
     * 
     * @param g Het Graphics-object waarop getekend moet worden
     * @param d Dier waarvoor de range moet getekend worden
     */
    private void drawDetectionRanges(Graphics g, Dier d) {
        Graphics2D g2 = (Graphics2D) g;
        double r = Constanten.DETECTION_DISTANCE;
        Ellipse2D ell = new Ellipse2D.Double(d.getLocation().x - r, d.getLocation().y - r, 2 * r, 2 * r);

        g2.draw(ell);
    }
}
